#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QDebug>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //重置窗口大小
    resize(900, 600);

    /*菜单栏，最多只能有一个*/

    //菜单栏创建
    QMenuBar *bar = menuBar();//menuBar()的返回值为QMenuBar格式，所以创建一个QMenuBar格式的*bar进行接收
    //menuBar()函数源码中已经把菜单栏放进对象树之中了，所以不需要再人工加到this中

    //将菜单栏放入到窗口中
    setMenuBar(bar);

    //创建菜单
    QMenu *fileMenu = bar->addMenu("文件");//bar->addMenu("文件")也有一个返回值，类型为QMenu
    QMenu *editMenu = bar->addMenu("编辑");

    //创建菜单项
    QAction *newAction = fileMenu->addAction("新建");//可以永QAction类型接受fileMenu->addAction("新建")返回的数据，然后就可以在工具栏的addAction()中使用
    //添加分隔符
    fileMenu->addSeparator();
    QAction * openAction = fileMenu->addAction("打开");
    editMenu->addAction("撤销");

    /*工具栏，可以有多个*/
    QToolBar * toolBar = new QToolBar(this);
    //addToolBar(toolBar);//这种情况下，工具栏默认再上面
    addToolBar(Qt::LeftToolBarArea, toolBar);//设置工具栏在左边

    //后期设置：只允许工具栏左右停靠
    toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);//但是Win10环境下，不知道为什么，拖动不了工具栏

    //设置浮动
    toolBar->setFloatable(false);//默认为true

    //设置移动（总开关）
    toolBar->setMovable(false);//默认为true

    //工具栏中可以设置内容
    toolBar->addAction(newAction);

    //添加分割线
    toolBar->addSeparator();
    toolBar->addAction(openAction);

    //工具栏中添加按钮
    QPushButton * btn = new QPushButton("A",this);
    toolBar->addWidget(btn);//可以通过addWidget方法，将QPushButton按钮添加进工具栏中
    //之所以addWidget可以，因为QPushButtoon的父类就是Widget


    /*状态栏，最多只能有一个*/
    QStatusBar * stBar = statusBar();
    //设置到窗口中
    setStatusBar(stBar);
    //放置标签控件
    QLabel * label = new QLabel("提示信息",this);
    stBar->addWidget(label);
    QLabel * label2 = new QLabel("right提示信息",this);
    stBar->addPermanentWidget(label2);


    //铆接部件 （浮动窗口）
    QDockWidget * dockwidget = new QDockWidget("浮动",this);
    addDockWidget(Qt::BottomDockWidgetArea,dockwidget);
    //设置后期停靠区域,只允许上下
    dockwidget->setAllowedAreas(Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea);

    /*设置中心部件,只能有一个*/
    QTextEdit * edit = new QTextEdit(this);
    setCentralWidget(edit);

}

MainWindow::~MainWindow()
{

}
